#include <stdlib.h>
#include "dsk.h"
#include "fmt_prt.h"


static struct linked_list dsk_obj_list;

int32_t register_dsk_obj(struct dsk_obj_struct* dsk_obj)
{
    if(!dsk_obj) {
        //
        fmt_printf("register dsk obj failed, dsk_obj == NULL\n");
        return -1;
    }

    list_push(&dsk_obj_list, &dsk_obj->node);
    fmt_printf("register dsk obj success, type == 0x%x\n", dsk_obj->type);
}

struct dsk_obj_struct* create_dsk_obj()
{
    struct dsk_obj_struct* dsk_obj;

    dsk_obj = malloc(sizeof(struct dsk_obj_struct));
    if(!dsk_obj) {
        //
        fmt_printf("create dsk obj failed, malloc failed\n");
        return NULL;
    }
    return dsk_obj;
}

struct dsk_obj_struct* find_dsk_obj(enum dsk_type_enum type)
{
    struct linked_node* each_node;
    struct dsk_obj_struct* dsk_obj;

    list_for_each(each_node, &dsk_obj_list) {
        dsk_obj = container_of(each_node, struct dsk_obj_struct, node);
        if(dsk_obj->type == type) return dsk_obj;
    }
    return NULL;
}

void free_dsk_objs()
{
    
}